package auth

// MenuType 菜单类型
type MenuType string

const (
	// DirectoryMenu 目录类型
	DirectoryMenu MenuType = "directory"
	// MenuPage 菜单类型
	MenuPage MenuType = "menu"
	// ButtonMenu 按钮类型
	ButtonMenu MenuType = "button"
)

// Menu 菜单模型
type Menu struct {
	ID         uint64   `json:"id"`
	ParentID   uint64   `json:"parentId"`
	Name       string   `json:"name"`
	Path       string   `json:"path"`
	Component  string   `json:"component"`
	Redirect   string   `json:"redirect"`
	Permission string   `json:"permission"` // 权限标识
	Type       MenuType `json:"type"`
	Icon       string   `json:"icon"`
	OrderNum   int      `json:"orderNum"`
	Hidden     bool     `json:"hidden"`
	KeepAlive  bool     `json:"keepAlive"`
	AlwaysShow bool     `json:"alwaysShow"`
	Target     string   `json:"target"` // 打开方式：_blank, _self
	Children   []*Menu  `json:"children"`
}

// MenuManager 菜单管理器
type MenuManager struct {
}

// NewMenuManager 创建菜单管理器实例
func NewMenuManager() *MenuManager {
	return &MenuManager{}
}

// TODO: 实现菜单树构建
// TODO: 实现根据角色过滤菜单
// TODO: 实现菜单权限验证
// TODO: 实现动态路由生成
// TODO: 实现前端菜单数据格式化
